前端必备知识点之HTTP协议

HTTP--Hyper Text Transfer Protocol,超文本传输协议。是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。其中一个请求的开始到一个响应的结束称为事务,当一个事务结束后还会在服务端添加一条日志条目。


HTTP协议的特点 :

  • http协议是一种无状态协议。(每次访问服务器时,没有办法识别身份)
  • 短连接协议(每次通信完毕就断开了)
  • http协议是一种单向通信协议(只能由客户的端主动向服务器发出请求,然后接受响应,服务器端不能主动给客户端发送消息)
  • 每次发起HTTP请求时,都会将浏览器缓存的cookie发送给服务器端。
  • 每次只能处理一个请求(两张图片,就是两个请求)
  • 简单、快捷、高效


一、HTTP请求

        HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。

    HTTP请求由状态行、请求头、请求正文三部分组成:

状态行:包括请求方式Method、资源路径URL、协议版本Version;

请求头:包括一些访问的域名、用户代理、Cookie等信息;

请求正文:就是HTTP请求的数据。

        备注:请求方式Method一般有GET、POST、PUT、DELETE,含义分别是获取、修改、上传、删除,其中GET方式仅仅为获取服务器资源,方式较为简单,因此在请求方式为GET的HTTP请求数据中,请求正文部分可以省略,直接将想要获取的资源添加到URL中。


二、HTTP响应

2.1 响应数据格式

        服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应。

        HTTP响应由三部分组成:状态行、响应头、响应正文

状态行:包括协议版本Version、状态码Status Code、回应短语;

响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;

响应正文:就是响应的具体数据。

        备注:我们主要关心并且能够在客户端浏览器看得到的是三位数的状态码,不同的状态码代表不同的含义,其中


1xx表示HTTP请求已经接受,继续处理请求

2xx表示HTTP请求已经处理完成3xx表示把请求访问的URL重定向到其他目录4xx表示客户端出现错误5xx表示服务端出现错误。


每一次请求信息中包含的数据:状态行 、 请求头(数据包头:headers)、请求的正文,统称“数据包”。
Request Hearders :数据的包头(包含信息): http传输过程 写信一样的 : 写信人、收信人信息,署名、日期...
  • 状态行:包含请求的方式、资源路径地址、协议版本号。
  • Request URL 请求的地址
  • Request Method 请求方式
  • Status Code 状态码
  • 200 ok 请求成功
  • 304 请求内容与上一次请求一致,内容没有修改(此时服务器不会返回任何资源,会通知浏览器去缓存中读取)
  • 404 not found 请求资源地址不存在(路径错误了,服务器地址出了问题)
  • 500 服务器内部错误(一般后台程序错误)
  • Remote Address 服务器ip地址 带端口号
  • 请求数据包头:
  • Accept : 服务器端能接受端数据格式
  • Accept-Encoding : 编码
  • Accept-Language: 语言
  • Cache-Control :设定缓存,及缓存的存活时间
  • Connection :keep-alive 保持长连接
  • Cookie (曲奇,饼干):存储在浏览器中的数据(存储一些用户信息数据)
  • Host :主机
  • User-Agent :用户代理(UA)能够标识客户端一些浏览器版本,系统的信息
  • 正文:(发送的数据)表单数据 、查询字符串等
Response Header服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应。

​ HTTP响应由三部分组成:状态行、响应头、响应正文

状态行:包括协议版本Version、状态码Status Code、回应短语;

响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;

​ cache-control: 设定缓存,及缓存的存活时间

​ content-length: 返回等内容的长度

​ Content-Type : 返回的内容类型

​ date :日期

​ last-modified :文件最后修改时间

​ server :服务器信息

响应正文:就是响应的具体数据。


2.2 常见状态码的含义

        200---OK/请求已经正常处理完毕

        301---/请求永久重定向

        302---/请求临时重定向

        304---/请求被重定向到客户端本地缓存

        400---/客户端请求存在语法错误

        401---/客户端请求没有经过授权

        403---/客户端的请求被服务器拒绝,一般为客户端没有访问权限

        404---/客户端请求的URL在服务端不存在

        500---/服务端永久错误

        503---/服务端发生临时错误